package com.loong.android.tools;

/**
 * 进制转换
 */
public class Hex {
    /**
     * 十进制整数转十六进制文本
     *
     * @param val 数值
     */
    public static String toHexString(int val) {
        return Integer.toHexString(val);
    }

    /**
     * 十进制整数转八进制文本
     *
     * @param val 数值
     */
    public static String toOctalString(int val) {
        return Integer.toOctalString(val);
    }

    /**
     * 十进制整数转二进制文本
     *
     * @param val 数值
     */
    public static String toBinaryString(int val) {
        return Integer.toBinaryString(val);
    }

    /**
     * 十进制整数转任意进制文本
     *
     * @param val 数值
     */
    public static String toAnyRadix(int val, int radix) {
        return Integer.toString(val, radix);
    }

    /**
     * 十六进制文本转十进制整数
     *
     * @param content 文本内容
     */
    public static int hex2Integer(String content) {
        try {
            return Integer.valueOf(content, 16);
        } catch (Exception e) {
            return -1;
        }
    }

    /**
     * 十六进制文本转八进制文本
     *
     * @param content 文本内容
     */
    public static String hex2Octal(String content) {
        try {
            return Integer.toOctalString(Integer.valueOf(content, 16));
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 十六进制文本转二进制文本
     *
     * @param content 文本内容
     */
    public static String hex2Binary(String content) {
        try {
            return Integer.toBinaryString(Integer.valueOf(content, 16));
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 八进制文本转十进制整数
     *
     * @param content 文本内容
     */
    public static int octal2Integer(String content) {
        try {
            return Integer.valueOf(content, 8);
        } catch (Exception e) {
            return -1;
        }
    }

    /**
     * 八进制文本转十六进制文本
     *
     * @param content 文本内容
     */
    public static String octal2Hex(String content) {
        try {
            return Integer.toHexString(Integer.valueOf(content, 8));
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 八进制文本转二进制文本
     *
     * @param content 文本内容
     */
    public static String octal2Binary(String content) {
        try {
            return Integer.toBinaryString(Integer.valueOf(content, 8));
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 二进制文本转十进制整数
     *
     * @param content 文本内容
     */
    public static int binary2Integer(String content) {
        try {
            return Integer.valueOf(content, 2);
        } catch (Exception e) {
            return -1;
        }
    }

    /**
     * 二进制文本转十六进制文本
     *
     * @param content 文本内容
     */
    public static String binary2Hex(String content) {
        try {
            return Integer.toHexString(Integer.valueOf(content, 2));
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 二进制文本转八进制文本
     *
     * @param content 文本内容
     */
    public static String binary2Octal(String content) {
        try {
            return Integer.toOctalString(Integer.valueOf(content, 2));
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 任意进制文本转十进制整数
     *
     * @param content 文本内容
     */
    public static int any2Integer(String content, int radix) {
        try {
            return Integer.valueOf(content, radix);
        } catch (Exception e) {
            return -1;
        }
    }

    /**
     * 任意进制文本转八进制文本
     *
     * @param content 文本内容
     */
    public static String any2Octal(String content, int radix) {
        try {
            return Integer.toOctalString(Integer.valueOf(content, radix));
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 任意进制文本转十六进制文本
     *
     * @param content 文本内容
     */
    public static String any2Hex(String content, int radix) {
        try {
            return Integer.toHexString(Integer.valueOf(content, radix));
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 任意进制文本转二进制文本
     *
     * @param content 文本内容
     */
    public static String any2Binary(String content, int radix) {
        try {
            return Integer.toBinaryString(Integer.valueOf(content, radix));
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 任意进制文本转任意进制文本
     *
     * @param content 文本内容
     */
    public static String any2any(String content, int beforeRadix, int afterRadix) {
        try {
            return Integer.toString(Integer.valueOf(content, beforeRadix), afterRadix);
        } catch (Exception e) {
            return "";
        }
    }
}
